// components/printer-selector/printer-selector.js
const db = wx.cloud.database();

Component({
  /**
   * 组件的属性列表
   */
  properties: {
    // 可以通过外部属性来过滤打印机类型，增加复用性
    filter: {
      type: Object,
      value: {}
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    printers: [],
    loading: true,
  },

  /**
   * 组件生命周期函数，在组件实例进入页面节点树时执行
   */
  attached: function() {
    this.getPrinters();
  },

  /**
   * 组件的方法列表
   */
  methods: {
    getPrinters: function() {
      this.setData({ loading: true });
      db.collection('printers').where(this.properties.filter).get().then(res => {
        this.setData({
          printers: res.data,
          loading: false
        });
      }).catch(err => {
        this.setData({ loading: false });
        wx.showToast({
          title: '加载打印机失败',
          icon: 'none'
        });
      });
    },

    // 选中打印机时，向父页面发送事件
    onSelect: function(e) {
      const selectedPrinter = e.currentTarget.dataset.printer;
      if (selectedPrinter.status !== '正常') {
        wx.showToast({
          title: '该打印机不可用',
          icon: 'none'
        });
        return;
      }
      this.triggerEvent('select', { printer: selectedPrinter });
    }
  }
})